/*
 * @Author: CB
 * @Date: 2023-07-27 14:42:16
 * @Description: 系统交互基类
 */
import { sys } from "cc";
import { PluginBase } from "./PluginBase";
import { Logger } from "db://oops-framework/core/common/log/Logger";

export class PluginSys extends PluginBase {
    /**
     * 获取设备deviceid
     */
    getDeviceId(): string {
        console.log('小黑屋获取设备id', 'PluginSysBase');
        const uuidGenerator = (len, radix) => {
            let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
            let uuid = [], i;
            radix = radix || chars.length;

            if (len) {
                // Compact form
                for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
            } else {
                // rfc4122, version 4 form
                let r;

                // rfc4122 requires these characters
                uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
                uuid[14] = '4';
                // Fill in random data. At i==19 set the high bits of clock sequence as
                // per rfc4122, sec. 4.1.5
                for (i = 0; i < 36; i++) {
                    if (!uuid[i]) {
                        r = 0 | Math.random() * 16;
                        uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
                    }
                }
            }
            return uuid.join('');
        }

        let uuid = sys.localStorage.getItem("_device_uuid_");
        if (!uuid) {
            uuid = sys.os + sys.platform + "_" + uuidGenerator(13, 16);
            uuid = uuid.replace(/[\s]+/, "");
            uuid = uuid.toLowerCase();
            sys.localStorage.setItem("_device_uuid_", uuid);
        }
        return uuid.trim();
    }

    /** 调用手机震动
     * @param milliseconds 震动时长 单位毫秒 [1000,2000,3000] 震动1秒，停2秒，再震动3秒
     * @param repeat 重复次数
     */
    vibrate(milliseconds: number[], repeat: number = 1) {
        Logger.trace(`调用手机震动 ${milliseconds}, ${repeat}`);
    }
}